package com.aloda.service;

import com.aloda.dto.*;
import com.aloda.entity.Employee;
import com.aloda.result.PageResult;
import com.aloda.vo.AuthVO;
import com.aloda.vo.EmployeeEditVO;
import com.aloda.vo.EmployeeLoginVO;
import com.aloda.vo.EmployeeSetVO;

public interface EmpService {

    /**
     * 员工后台登录
     * @param employeeLoginDTO
     */
    EmployeeLoginVO empLogin(EmployeeLoginDTO employeeLoginDTO);

    /**
     * 当前登录者的权限
     * TODO 接收id但不使用，利用线程和jwt方法取出当前登录用户id,两者可以比较
     * @param id
     * @return
     */
    AuthVO getEmpAuth(Long id);

    /**
     * 个人信息设置回显
     * @return
     */
    EmployeeSetVO getEmpSetInfo();

    /**
     * 员工修改个人信息
     * @param
     */
    void empModifyInfo( EmployeeModifyDTO employeeModifyDTO);

    /**
     * 员工修改密码
     * @param modifyPwdDTO
     */
    void empModifyPwd(ModifyPwdDTO modifyPwdDTO);

    /**
     * 员工分页查询
     * @return
     */
    PageResult empPage(EmployeePageDTO employeePageDTO);

    /**
     * 新增员工
     * @param employeeAddDTO
     */
    void addEmp(EmployeeAddDTO employeeAddDTO);

    /**
     * 根据id获取员工编辑页面数据
     * @param id
     * @return
     */
    EmployeeEditVO getEmpById(Long id);

    /**
     * 更新员工信息
     * @param employeeEditDTO
     */
    void updateEmp(EmployeeEditDTO employeeEditDTO);

    /**
     * 员工重置密码
     * @param id
     */
    void resetPwd(Long id);

    /**
     * 设置员工账号状态
     * @param id
     * @param status
     */
    void resetStatus(Long id, Integer status);

    /**
     * 设置员工注销状态
     * @param id
     * @param auth
     */
    void logoutEmp(Long id, Integer auth);
}
